// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the OPENCVADAPTER_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// OPENCVADAPTER_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef OPENCVADAPTER_EXPORTS
#define OPENCVADAPTER_API __declspec(dllexport)
#else
#define OPENCVADAPTER_API __declspec(dllimport)
#endif

// This class is exported from the OpenCvAdapter.dll
#include <cv.h>
#include <highgui.h>
#include "MarkerPoint.h"
#include "SupportiveFunctions.h"
#include "CallibrationData.h"
#include "StethLocationData.h"

extern "C"
{
typedef void (__stdcall * ImagePushedDelegate)(int, int, uchar*);
typedef void (__stdcall * StethLocationDataPushedDelegate)(StethLocationData*);
typedef void (__stdcall * CapturingFinishedDelegate)();

OPENCVADAPTER_API void StartProcessing();
OPENCVADAPTER_API void StartCapturing(long imagePushedDelegate, long StethLocationDataPushedDelegate);
OPENCVADAPTER_API void StartCapturingFromFile(const char* fileName, 
											  long imagePushedDelegate, 
											  long StethLocationDataPushedDelegate,
											  long CapturingFinishedDelegate);
OPENCVADAPTER_API void StartCaptureAndRecord(const char* fileName, 
											 long imagePushedDelegate, 
											 long StethLocationDataPushedDelegate);
OPENCVADAPTER_API void StopCapturing();
OPENCVADAPTER_API void StartCallibration(long imagePushedDelegate);
OPENCVADAPTER_API void StopCallibration();
OPENCVADAPTER_API void UpdateDataAndStopCallibration(uchar* parameters, int length);
}


